package cn.school.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import java.util.*;
import cn.shcool.entity.Student;

public interface StudentDao {
	/**
	 * 查询指定列,要查询的列放到数组中。比如 blob
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public List<Student> paging3(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize,
			@Param("cols") String... cols);

	// 查询，一个年龄范围参数，1表示18岁以下，2表示 18-25,3表示25-30,4表示30以上

	public List<Student> search3(@Param("ageFanwei") int ageType);

	/**
	 * 根据性别查询学生信息 sex=0,查男 sex=1,查女 sex=2,查妖 其他，查sex为 null
	 * 
	 * @param sex
	 * @return
	 */
	public List<Student> search2(@Param("sex") int sex);

	public int update(Student s);

	public int batchdel(@Param("ids") long[] ids);

	/**
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public List<Student> paging(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize);

	Student get(long stuno);

	// 特殊的不行
	// public List<Student> search(Student s);
	public List<Student> search1(Map<String, Object> params);

	/**
	 * 
	 * @param name           姓名
	 * @param tele           手机号
	 * @param enterDateStart 入学时候的开始
	 * @param enterEnd       入学时间的结束
	 * @return
	 */
	// public List<Student> search(String name, String tele, Date enterDateStart,
	// Date enterEnd);
	// 利用注解给参数起名字，在xml中引用
//	public List<Student> search(@Param("name") String name, @Param("tele") String tele,
//			@Param("enterStart") Date enterDateStart, @Param("enterEnd") Date enterEnd);

	public List<Student> search(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize,
			@Param("name") String name, @Param("tele") String tele, @Param("enterStart") Date enterDateStart,
			@Param("enterEnd") Date enterEnd);

	// 根据这几个查询条件，查询总条数
	public int searchTotal(@Param("name") String name, @Param("tele") String tele,
			@Param("enterStart") Date enterDateStart, @Param("enterEnd") Date enterEnd);
}
